generator functions applications